/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package domain.controllers;

import domain.Entity.EntityGestor;
import domain.Entity.EntityProyecto;
import domain.Entity.EntityTarea;
import domain.Entity.EntityTrabajador;
import domain.Entity.EntityUsuario;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import managers.ProyectoManager;
import managers.TareaManager;
import managers.UsuarioManager;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.view.RedirectView;

/**
 *
 * @author jorge
 */
public class obtenerUsuarioController implements Controller{
   
    UsuarioManager um = UsuarioManager.getInstance();

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        
        ModelAndView mav = new ModelAndView();
        HttpSession session = request.getSession();
        ProyectoManager pm = ProyectoManager.getInstance();
        TareaManager tm = TareaManager.getInstance();
        
        EntityUsuario eu = (EntityUsuario) session.getAttribute("usuario");
        if(eu.getTipo().equals("gestor")){
            List l = new ArrayList();
            List proyectos = pm.mostrarProyectosGestor(eu.getDni());
            Iterator itp = proyectos.iterator();
            while(itp.hasNext()){
                EntityProyecto proyecto = (EntityProyecto) itp.next();
                List tareas = tm.mostrarTareasProyecto(proyecto.getIdProyecto());
                Iterator itt = tareas.iterator();
                while(itt.hasNext()){
                    EntityTarea tarea = (EntityTarea) itt.next();
                    StringTokenizer st = new StringTokenizer(tarea.getEtiquetas());
                    while(st.hasMoreTokens()){
                        String s = st.nextToken();
                            if(!l.contains(s)){ 
                                l.add(s);
                            } 
                    }
                }
            }  
            Collections.sort(l);
            EntityGestor eg = um.obetenerGestor(eu.getDni());
            session.setAttribute("gestorUsuario", eg);
            session.setAttribute("etiquetas", l);
       
        }else{
             
             EntityTrabajador etr = um.getTrabajador(eu.getDni());
             List l = new ArrayList();
             Iterator it = etr.getEt().iterator();
             while(it.hasNext()){
                EntityTarea tarea = (EntityTarea) it.next();
                    StringTokenizer st = new StringTokenizer(tarea.getEtiquetas());
                    while(st.hasMoreTokens()){
                        String s = st.nextToken();
                            if(!l.contains(s)){ 
                                l.add(s);
                            } 
                    }
                }
                Collections.sort(l);
                session.setAttribute("etiquetas", l);
                session.setAttribute("trabajadorUsuario", etr);
             }
        
        mav.setView(new RedirectView("crearInforme.htm"));
        return mav;
        
    }
}
